In order to speed up the experience of browsing the World Wide Web, the HTTP protocol supports the use of local caching. See “HyperText Transfer Protocol—HTTP/1.1,” RFC 2616 (available on the world wide web at w3.org/Protocols/rfc2616/rfc2616.html). Generally, a client (i.e., the device requesting an object) maintains copies of resources in a local cache so that the resources can be used to satisfy future requests without the need to retrieve the objects from the origin server (i.e., the server that provides the object). Intermediate servers (i.e., servers in the HTTP response-request chain in-between the client and origin server) also may maintain copies of resources in an associated cache. The cached resources may be, for example, a web page (e.g., a hypertext mark-up language (HTML) document or “top page”) or the resources embedded in a web page (e.g., images, style sheets, or Javascript files). As part of the HTTP protocol, an origin server can set a time (generally referred to as the expiration time) until which a cacheable object remains valid, i.e., until which the object will remain unchanged and, therefore, until which the cached object can be used. When the expiration time has been reached, the cache may attempt to simply validate the cached object (e.g., by verifying with the origin server that the cached object is unchanged) to enable further use of the cached resource. The HTTP protocol has additional mechanisms that cause a client to validate a cached resource before using it. For example, an HTTP server can force a cache to validate cached resources after they become stale by using the “must-revalidate” cache-control directive of the HTTP protocol (see section 14.9 of the HTTP 1.1 protocol).